![]() | MENTAL vs. CÁLCULO LAMBDA DE CHURCH |
z = 〈( f(x y) = x+y+2 )〉
z/(x=a y=b) // ev. 〈( f(a b) = a+b+2 )〉
z = 〈( f(a b) = a+b+2 )〉
z/(a=x b=y) // ev. 〈( f(x y) = x+y+2 )〉
(z = x+y+2)
z/(x=3 y=4) // ev. 9
z/(x=3) // ev. y+5
〈( f(n) = (2*n + 1) )〉 // definición función parametrizada con nombre
f(3) // ev. 7 (aplicación)
f=(2*n + 1) // definición de función no parametrizada con nombre
f/(n=3) // ev. 7 (aplicación)
(2*n + 1)/(n=3) // ev. 7 (definición y aplicación de función sin nombre)
〈x+y+z+1〉
, x
e y
son parámetros y z
es una variable no parametrizada.
f(5)/〈(f(n) = 2*n + 1)〉 // ev. 11
(2*n + 1)/(n=5) // ev. 11
z=(2*n + 1)
z/(n=5) // ev. 11
M/(x=N)
. En el cálculo lambda, si x no existe en M, el resultado es M. En MENTAL la expresión se autoevalúa. Por ejemplo,
(M = axb)
M/(y=c) // se autoevalúa
M // ev. axb
(x+y+1)/(x=a)/(y=b) // ev. (a+y+1)/(y=b) ev. a+b+1
〈x+x+1〉
, x es un parámetro y x
es una variable. Por lo tanto, la conversión α no es necesaria.
〈( f(x y) = (x+y x*y) )〉
f(2 3) // ev. (5 6)
(x+y x*y)/(x=3 y=3) // ev. (5 6)
(x+y+2)/(x=3) // ev. 5+y
〈( f(x y) = x+y x*y) )〉
〈( g(y) = f(5 y) )〉 // ev. 〈( g(y) = 5+y 5*y )〉
〈( f = x+y+2 )〉
〈( g(y) = f/(x=5) )〉 // ev. 〈( g(y) = 7+y )〉
〈( fac(n) = 1 ← n=1 →' n*fac(n−1) )〉 // factorial de n